import { createStore } from 'vuex'
import axios from 'axios';
import { ElMessage } from 'element-plus';
import { id } from 'element-plus/es/locales.mjs';
import { removeCurrentUser, removeToken, setToken, getToken, getCurrentUser } from '../utils/auth';
import { getPersonalUser } from '@/api/user'
import { useRouter } from 'vue-router';

const router = useRouter();

export default createStore({
  state: {
    // 是否加载中
    isLoading: false,
    // 是否登录
    isLogin: getToken(),
    // 当前用户
    user: getCurrentUser(),
  },
  mutations: {
    // 在这里定义你的状态修改方法
    // 退出登录或登录过期时初始化个别数据
    initData(state) {
      state.isLogin = false;
      state.user = {};
      // ElMessage.success("退出成功");
    },
    // 更新登录状态
    updateIsLogin(state, isLogin) {
      state.isLogin = isLogin;
    },
    // 更新当前用户
    updateUser(state, user) {
      state.user = user;
      // console.log("更新vuex中用户信息: ", state.user);
    },

  },
  actions: {
    // 退出登录
    logout(context) {
      // 先修改状态再发送请求，防止token过期导致退出失败
      context.state.isLogin = false;
      context.state.user = {};
      removeCurrentUser();
      // 清除本地token缓存
      removeToken();
    },
    // 获取当前用户信息
    async getPersonalInfo(context) {
      await getPersonalUser().then(res => {
        if (res.code == 1) {
          context.commit("updateUser", res.data);
          context.state.isLogin = true;
        } else {
          removeToken();
          context.state.isLogin = false;
          // 清空user信息
          context.state.user = {};
          ElMessage.error("登录状态过期");
          router.push("/login");
        }
      })
    },
  },
  modules: {
    // 在这里定义你的模块
  }
});
